#ifndef AI_H
#define AI_H

#include <QString>
#include <QVector>
#include <QMessageBox>
#include <QDataStream>

#define	LENGTH_NODE	3
typedef QVector<QVector<quint32> > iivector;

enum within_a_word {out, in};			// Внутри ли блока node?

class AI
{
public:
	AI();
	int receive(QString data);
	QMessageBox msgbox;
	QString getvecstr();
	QString getCountNode();
	QString getCombination();
private:
	QString temp;
	within_a_word inside;
	//QVector <quint32>::iterator shadow;
/************************************************************************
 *	Динамическая матрица, первый элемент содержит номер слова	*
 *	второй колличество комбинаций					*
 *	за комбинацию принимать LENGTH_NODE ячеек матрицы		*
 *	комбинация состоит из						*
 *	1) шкала инь-ян							*
 *	2) номер предидущего слова					*
 *	3) номер последующего слова					*
 *	Если слово стоит первым в предложении, то предидущее слово	*
 *	считать за 0, так же если последнее то последующее		*
 *	считать за 0							*
 ************************************************************************/
	iivector number_and_combination;

	QVector<QString> memory;
	QVector<QString> cache;			// Память полученной строки разделённой на слова
	QVector <quint32>::size_type findNode(QString word);
	QVector <quint32>::size_type addCombination(QVector <quint32>::size_type select_word, QVector <quint32>::size_type previous);
	void brokenLine(QString line);
	QVector <quint32>::size_type addNode(QString word);
	int inyan;
};

#endif // AI_H
